﻿using MyLeetCode.Data;

public partial class Solution
{
    public ListNode AddTwoNumbers(ListNode l1, ListNode l2)
    {
        // 最终结果
        ListNode result = null;
        // 当前操作节点
        ListNode node = null;
        int plus = 0;
        while (l1 != null || l2 != null)
        {
            int v1 = l1?.Value ?? 0;
            int v2 = l2?.Value ?? 0;
            int value = v1 + v2 + plus;
            if (value >= 10)
            {
                value %= 10;
                plus = 1;
            }
            else
            {
                plus = 0;
            }
            // 添加个位值
            if (result == null)
            {
                result = new ListNode(value);
                node = result;
            }
            // 添加高位值
            else
            {
                node.Next = new ListNode(value);
                node = node.Next;
            }
            l1 = l1?.Next;
            l2 = l2?.Next;
        }
        // 如果还有进位，补一个
        if (plus == 1)
        {
            node.Next = new ListNode(1);
        }
        return result;
    }
}
